home *** CD-ROM | disk | FTP | other *** search
/ Dynamic HTML Construction Kit / Dynamic HTML Construction Kit.iso / earthlink / nscomm / java40.jar / sun / awt / windows / WToolkit.class (.txt) < prev    next >
Encoding:
Java Class File  |  1997-11-03  |  7.9 KB  |  348 lines

  1. package sun.awt.windows;
  2.  
  3. import java.awt.Button;
  4. import java.awt.Canvas;
  5. import java.awt.Checkbox;
  6. import java.awt.CheckboxMenuItem;
  7. import java.awt.Choice;
  8. import java.awt.Dialog;
  9. import java.awt.Dimension;
  10. import java.awt.FileDialog;
  11. import java.awt.Font;
  12. import java.awt.FontMetrics;
  13. import java.awt.Frame;
  14. import java.awt.Image;
  15. import java.awt.Label;
  16. import java.awt.List;
  17. import java.awt.Menu;
  18. import java.awt.MenuBar;
  19. import java.awt.MenuItem;
  20. import java.awt.Panel;
  21. import java.awt.Scrollbar;
  22. import java.awt.TextArea;
  23. import java.awt.TextField;
  24. import java.awt.Toolkit;
  25. import java.awt.Window;
  26. import java.awt.image.ColorModel;
  27. import java.awt.image.ImageObserver;
  28. import java.awt.image.ImageProducer;
  29. import java.awt.peer.ButtonPeer;
  30. import java.awt.peer.CanvasPeer;
  31. import java.awt.peer.CheckboxMenuItemPeer;
  32. import java.awt.peer.CheckboxPeer;
  33. import java.awt.peer.ChoicePeer;
  34. import java.awt.peer.DialogPeer;
  35. import java.awt.peer.FileDialogPeer;
  36. import java.awt.peer.FramePeer;
  37. import java.awt.peer.LabelPeer;
  38. import java.awt.peer.ListPeer;
  39. import java.awt.peer.MenuBarPeer;
  40. import java.awt.peer.MenuItemPeer;
  41. import java.awt.peer.MenuPeer;
  42. import java.awt.peer.PanelPeer;
  43. import java.awt.peer.ScrollbarPeer;
  44. import java.awt.peer.TextAreaPeer;
  45. import java.awt.peer.TextFieldPeer;
  46. import java.awt.peer.WindowPeer;
  47. import java.net.URL;
  48. import java.util.Hashtable;
  49. import netscape.applet.AppletPeer;
  50. import sun.awt.ObjectPeer;
  51. import sun.awt.image.ByteArrayImageSource;
  52. import sun.awt.image.FileImageSource;
  53. import sun.awt.image.ImageRepresentation;
  54. import sun.awt.image.URLImageSource;
  55.  
  56. class WToolkit extends Toolkit implements Runnable {
  57.    boolean serverThread = true;
  58.    boolean libraryLoaded = false;
  59.    Thread callbackThread;
  60.    static Hashtable imgHash = new Hashtable();
  61.    static ColorModel screenmodel;
  62.  
  63.    Thread getCallbackThread() {
  64.       return this.callbackThread;
  65.    }
  66.  
  67.    public WToolkit() {
  68.       (new Thread(this, "AWT-Windows")).start();
  69.       synchronized(this){}
  70.  
  71.       try {
  72.          try {
  73.             while(this.serverThread) {
  74.                this.wait(5000L);
  75.             }
  76.          } catch (InterruptedException var4) {
  77.             System.exit(1);
  78.          }
  79.       } catch (Throwable var5) {
  80.          throw var5;
  81.       }
  82.  
  83.       if (this.libraryLoaded) {
  84.          this.callbackThread = new Thread(this, "AWT-Callback");
  85.          this.callbackThread.start();
  86.       }
  87.  
  88.    }
  89.  
  90.    private native void init(Thread var1);
  91.  
  92.    public void run() {
  93.       if (this.serverThread) {
  94.          try {
  95.             SecurityManager.enablePrivilege("UniversalLinkAccess");
  96.             String var1 = System.getProperty("os.name");
  97.             if (var1.compareTo("16-bit Windows") == 0) {
  98.                System.loadLibrary("awt1640");
  99.             } else {
  100.                System.loadLibrary("awt3240");
  101.             }
  102.  
  103.             SecurityManager.revertPrivilege();
  104.             this.init(Thread.currentThread());
  105.             this.libraryLoaded = true;
  106.             this.serverThread = false;
  107.             this.eventLoop();
  108.          } catch (UnsatisfiedLinkError var2) {
  109.             this.libraryLoaded = false;
  110.             this.serverThread = false;
  111.          }
  112.       } else {
  113.          this.callbackLoop();
  114.       }
  115.    }
  116.  
  117.    native void callbackLoop();
  118.  
  119.    native void eventLoop();
  120.  
  121.    public native void notImplemented();
  122.  
  123.    protected ButtonPeer createButton(Button var1) {
  124.       return new WButtonPeer(var1);
  125.    }
  126.  
  127.    protected TextFieldPeer createTextField(TextField var1) {
  128.       return new WTextFieldPeer(var1);
  129.    }
  130.  
  131.    protected LabelPeer createLabel(Label var1) {
  132.       return new WLabelPeer(var1);
  133.    }
  134.  
  135.    protected ListPeer createList(List var1) {
  136.       return new WListPeer(var1);
  137.    }
  138.  
  139.    protected CheckboxPeer createCheckbox(Checkbox var1) {
  140.       return new WCheckboxPeer(var1);
  141.    }
  142.  
  143.    protected ScrollbarPeer createScrollbar(Scrollbar var1) {
  144.       return new WScrollbarPeer(var1);
  145.    }
  146.  
  147.    protected TextAreaPeer createTextArea(TextArea var1) {
  148.       return new WTextAreaPeer(var1);
  149.    }
  150.  
  151.    protected ChoicePeer createChoice(Choice var1) {
  152.       return new WChoicePeer(var1);
  153.    }
  154.  
  155.    protected FramePeer createFrame(Frame var1) {
  156.       return new WFramePeer(var1);
  157.    }
  158.  
  159.    protected CanvasPeer createCanvas(Canvas var1) {
  160.       return new WCanvasPeer(var1);
  161.    }
  162.  
  163.    protected PanelPeer createPanel(Panel var1) {
  164.       return new WPanelPeer(var1);
  165.    }
  166.  
  167.    protected WindowPeer createWindow(Window var1) {
  168.       return new WWindowPeer(var1);
  169.    }
  170.  
  171.    protected DialogPeer createDialog(Dialog var1) {
  172.       return new WDialogPeer(var1);
  173.    }
  174.  
  175.    protected FileDialogPeer createFileDialog(FileDialog var1) {
  176.       return new WFileDialogPeer(var1);
  177.    }
  178.  
  179.    protected MenuBarPeer createMenuBar(MenuBar var1) {
  180.       return new WMenuBarPeer(var1);
  181.    }
  182.  
  183.    protected MenuPeer createMenu(Menu var1) {
  184.       return new WMenuPeer(var1);
  185.    }
  186.  
  187.    protected MenuItemPeer createMenuItem(MenuItem var1) {
  188.       return new WMenuItemPeer(var1);
  189.    }
  190.  
  191.    protected CheckboxMenuItemPeer createCheckboxMenuItem(CheckboxMenuItem var1) {
  192.       return new WCheckboxMenuItemPeer(var1);
  193.    }
  194.  
  195.    static synchronized Image getImageFromHash(Toolkit var0, URL var1) {
  196.       System.getSecurityManager().checkURLConnect(var1);
  197.       Image var2 = (Image)imgHash.get(var1);
  198.       if (var2 == null) {
  199.          try {
  200.             var2 = var0.createImage(new URLImageSource(var1));
  201.             imgHash.put(var1, var2);
  202.          } catch (Exception var3) {
  203.          }
  204.       }
  205.  
  206.       return var2;
  207.    }
  208.  
  209.    static synchronized Image getImageFromHash(Toolkit var0, String var1) {
  210.       System.getSecurityManager().checkRead(var1);
  211.       Image var2 = (Image)imgHash.get(var1);
  212.       if (var2 == null) {
  213.          try {
  214.             var2 = var0.createImage(new FileImageSource(var1));
  215.             imgHash.put(var1, var2);
  216.          } catch (Exception var3) {
  217.          }
  218.       }
  219.  
  220.       return var2;
  221.    }
  222.  
  223.    public Image getImage(String var1) {
  224.       return getImageFromHash(this, (String)var1);
  225.    }
  226.  
  227.    public Image getImage(URL var1) {
  228.       return getImageFromHash(this, (URL)var1);
  229.    }
  230.  
  231.    static boolean prepareScrImage(Image var0, int var1, int var2, ImageObserver var3) {
  232.       if (var1 != 0 && var2 != 0) {
  233.          WImage var4 = (WImage)var0;
  234.          if (((sun.awt.image.Image)var4).hasError()) {
  235.             if (var3 != null) {
  236.                var3.imageUpdate(var0, 192, -1, -1, -1, -1);
  237.             }
  238.  
  239.             return false;
  240.          } else {
  241.             if (var1 < 0) {
  242.                var1 = -1;
  243.             }
  244.  
  245.             if (var2 < 0) {
  246.                var2 = -1;
  247.             }
  248.  
  249.             ImageRepresentation var5 = var4.getImageRep(var1, var2);
  250.             return var5.prepare(var3);
  251.          }
  252.       } else {
  253.          return true;
  254.       }
  255.    }
  256.  
  257.    static int checkScrImage(Image var0, int var1, int var2, ImageObserver var3) {
  258.       WImage var4 = (WImage)var0;
  259.       int var5;
  260.       if (var1 != 0 && var2 != 0) {
  261.          if (var1 < 0) {
  262.             var1 = -1;
  263.          }
  264.  
  265.          if (var2 < 0) {
  266.             var2 = -1;
  267.          }
  268.  
  269.          var5 = var4.getImageRep(var1, var2).check(var3);
  270.       } else {
  271.          var5 = 32;
  272.       }
  273.  
  274.       return ((sun.awt.image.Image)var4).check(var3) | var5;
  275.    }
  276.  
  277.    public int checkImage(Image var1, int var2, int var3, ImageObserver var4) {
  278.       return checkScrImage(var1, var2, var3, var4);
  279.    }
  280.  
  281.    public boolean prepareImage(Image var1, int var2, int var3, ImageObserver var4) {
  282.       return prepareScrImage(var1, var2, var3, var4);
  283.    }
  284.  
  285.    public Image createImage(ImageProducer var1) {
  286.       return new WImage(var1);
  287.    }
  288.  
  289.    public Image createImage(byte[] var1, int var2, int var3) {
  290.       return this.createImage(new ByteArrayImageSource(var1, var2, var3));
  291.    }
  292.  
  293.    static native ColorModel makeColorModel();
  294.  
  295.    static ColorModel getStaticColorModel() {
  296.       if (screenmodel == null) {
  297.          screenmodel = makeColorModel();
  298.       }
  299.  
  300.       return screenmodel;
  301.    }
  302.  
  303.    public ColorModel getColorModel() {
  304.       return getStaticColorModel();
  305.    }
  306.  
  307.    public Dimension getScreenSize() {
  308.       return new Dimension(this.getScreenWidth(), this.getScreenHeight());
  309.    }
  310.  
  311.    public native int getScreenResolution();
  312.  
  313.    public native void sync();
  314.  
  315.    native int getScreenWidth();
  316.  
  317.    native int getScreenHeight();
  318.  
  319.    public String[] getFontList() {
  320.       String[] var1 = new String[]{"Dialog", "Helvetica", "TimesRoman", "Courier", "Symbol"};
  321.       return var1;
  322.    }
  323.  
  324.    public FontMetrics getFontMetrics(Font var1) {
  325.       return WFontMetrics.getFontMetrics(var1);
  326.    }
  327.  
  328.    void sendEvent(AppletPeer var1, int var2, ObjectPeer var3) {
  329.       var1.sendEvent(new StandardGUIEvent(var2, var3));
  330.    }
  331.  
  332.    void sendPaintEvent(AppletPeer var1, ObjectPeer var2, int var3, int var4, int var5, int var6, int var7) {
  333.       PaintEvent var8 = new PaintEvent(var2, var3, var4, var5, var6, var7);
  334.       var1.coalesceEvent(var8);
  335.       var1.sendEvent(var8);
  336.    }
  337.  
  338.    void removeEventsForObject(ObjectPeer var1) {
  339.       if (var1 != null) {
  340.          AppletPeer var2 = var1.getApplet();
  341.          if (var2 != null) {
  342.             var2.removeEvents(var1);
  343.          }
  344.       }
  345.  
  346.    }
  347. }
  348.